package com.ruoyi.system.controller;


import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.system.domain.ArchiveUtilizationStats;
import com.ruoyi.system.service.ArchiveUtilizationStatsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.*;
import java.util.stream.Collectors;

/**
 * 档案利用统计 Controller
 * 提供接口给前端调用，实现前后端交互
 *
 * @author [你的名字或团队名]
 */
@RestController
@RequestMapping("/archive/utilizationStats")
public class ArchiveUtilizationStatsController {

    @Autowired
    private ArchiveUtilizationStatsService statsService;

    /**
     * 查询档案利用统计列表
     * 支持名称模糊查询
     */
    @GetMapping("/list")
    public AjaxResult list(ArchiveUtilizationStats stats) {
        List<ArchiveUtilizationStats> list = statsService.selectArchiveUtilizationStatsList(stats);
        Set<String> names = new HashSet<>();
        if(list != null && list.size() > 0)
        {
            names = list.stream().map(m -> m.getName()).collect(Collectors.toSet());
        }
        Map<String,Object> map = new HashMap<>();
        map.put("seriesData",list);
        map.put("xData",names);
        return AjaxResult.success(map); // 封装分页结果
    }

    /**
     * 根据主键ID查询档案利用统计详情
     */
    @GetMapping("/{id}")
    public AjaxResult getInfo(@PathVariable("id") Long id) {
        ArchiveUtilizationStats stats = statsService.selectArchiveUtilizationStatsById(id);
        return AjaxResult.success(stats);
    }

    /**
     * 新增档案利用统计记录
     */
    @PostMapping
    public AjaxResult add(@RequestBody ArchiveUtilizationStats stats) {
        int result = statsService.insertArchiveUtilizationStats(stats);
        return AjaxResult.success(result);
    }

    /**
     * 修改档案利用统计记录
     */
    @PutMapping
    public AjaxResult edit(@RequestBody ArchiveUtilizationStats stats) {
        int result = statsService.updateArchiveUtilizationStats(stats);
        return AjaxResult.success(result);
    }

    /**
     * 删除档案利用统计记录（单条）
     */
    @DeleteMapping("/{id}")
    public AjaxResult remove(@PathVariable Long id) {
        int result = statsService.deleteArchiveUtilizationStatsById(id);
        return AjaxResult.success(result);
    }

    /**
     * 批量删除档案利用统计记录
     */
    @DeleteMapping("/batch/{ids}")
    public AjaxResult removeBatch(@PathVariable Long[] ids) {
        int result = statsService.deleteArchiveUtilizationStatsByIds(ids);
        return AjaxResult.success(result);
    }

    /**
     * 批量保存档案利用统计数据（先删后插）
     */
    @PostMapping("/batchSave")
    public AjaxResult batchSave(@RequestBody List<ArchiveUtilizationStats> list) {
        int result = statsService.batchSaveArchiveUtilizationStats(list);
        return AjaxResult.success(result);
    }
}